package com.baikeyang.service.activity;

import com.baikeyang.common.bean.ResponseResult;
import com.baikeyang.common.model.ActivityFileLibrary;
import com.baikeyang.common.model.FileInfo;
import com.baikeyang.service.base.ISuperService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 活动媒体文件库 服务类
 * </p>
 *
 * @author BaiKeyang
 * @since 2019-05-15
 */
public interface IActivityFileLibraryService extends ISuperService<ActivityFileLibrary> {

	/**
	 * 查看媒体库文件（分页）
	 * @param pageParam
	 * @return
	 */
	IPage<ActivityFileLibrary> loadActivityFilePage(Page<ActivityFileLibrary> pageParam);

	/**
	 * 保存文件
	 * @param multipartFile 文件
	 * @param tempFileName 文件临时名称
	 * @param fileName 文件真实名称
	 * @param size 文件大小
	 * @param type 文件类型
	 * @param lastModifiedDate 文件最后一次修改时间
	 * @param chunk 当前文件分片
	 * @param chunks 文件分片总数
	 * @return
	 */
	ResponseResult saveFile(MultipartFile multipartFile, String tempFileName, String fileName, Integer size,
							String type, Date lastModifiedDate, Integer chunks, Integer chunk, String md5,
							String album, HttpServletRequest request) throws IOException;

	/**
	 * 删除文件
	 * @param id
	 * @return
	 */
    ResponseResult deleteFile(String id);

	/**
	 * 根据文件的MD5查询该文件是否已存在
	 * @param md5 文件唯一指纹
	 * @return
	 */
	ResponseResult checkFile(String md5);

	/**
	 * 根据文件的MD5、分片序号、分片大小 判断分片是否已经存在
	 * @param md5 文件唯一指纹
	 * @param chunk 分片序号
	 * @param chunkSize 分片大小
	 * @param request
	 * @return
	 */
	ResponseResult checkChunk(String md5, Integer chunk, Integer chunkSize, HttpServletRequest request);


	List<ActivityFileLibrary> loadActivityFileLibraryByAlbum(int album);

	/**
	 * 微信上传图片
	 * @param multipartFile
	 * @param userId
	 * @param request
	 * @return
	 */
    ResponseResult fileUpdateForWx(MultipartFile multipartFile, String userId, HttpServletRequest request);
}
